from pyramid.config import Configurator

from .security import SecurityPolicy


def main(global_config, **settings):
    """
    创建应用程序的主入口点。

    参数:
    - global_config: 通常包含来自命令行或环境变量的全局配置信息。
    - settings: 一个包含应用特定配置的字典，键值对形式。

    返回:
    - 返回一个WSGI应用，可以部署到Web服务器上运行。
    """
    # 初始化配置器
    config = Configurator(settings=settings,
                          root_factory='.resources.Root')
    # 引入模板引擎
    config.include('pyramid_chameleon')

    # 设置安全策略
    config.set_security_policy(
        SecurityPolicy(
            secret=settings['tutorial.secret'],
        ),
    )

    # 定义应用的路由
    config.add_route('home', '/')  # 主页路由
    config.add_route('hello', '/howdy')  # 一个示例路由
    config.add_route('login', '/login')  # 登录路由
    config.add_route('logout', '/logout')  # 登出路由
    # 扫描视图以便将它们与路由关联
    config.scan('.views')

    # 创建并返回WSGI应用
    return config.make_wsgi_app()
